package com.enjoyor.soa.traffic.rest.tsms.dubbo;

import com.enjoyor.soa.traffic.api.dto.tsms.TaskInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

public interface ITaskInfoConsumeService {

	/**
	 * 根据编号查询任务信息
	 * @param taskId 任务编号（不为空）
	 * @return
	 */
    public ResultPojo selectTaskInfoById(String taskId);
    
    /**
	 * 查询任务列表信息
	 * @param taskId 任务编号
	 * @param taskName 任务名称（模糊查询）
	 * @param schemeId 方案编号
	 * @param taskRankId 任务等级编号
	 * @param taskTypeId 任务类型编号
	 * @param taskBeginTime 任务开始时间
	 * @param taskEndTime 任务结束时间
	 * @param startPlace 起始位置（模糊查询）
	 * @param targetPlace 到达位置（模糊查询）
	 * @return 
	 */
    public ResultPojo selectTaskInfoList(String taskId, String taskName, String schemeId,
    		String taskRankId, String taskTypeId, String taskBeginTime, String taskEndTime,String startPlace, String targetPlace);
    
    /**
	 * 查询任务分页信息
	 * @param page
	 * @param taskId 任务编号
	 * @param taskName 任务名称（模糊查询）
	 * @param schemeId 方案编号
	 * @param taskRankId 任务等级编号
	 * @param taskTypeId 任务类型编号
	 * @param taskBeginTime 任务开始时间
	 * @param taskEndTime 任务结束时间
	 * @param startPlace 起始位置（模糊查询）
	 * @param targetPlace 到达位置（模糊查询）
	 * @return
	 */
    @SuppressWarnings("rawtypes")
    public ResultPojo selectTaskInfoPage(Page page, String taskId, String taskName, String schemeId,
    		String taskRankId, String taskTypeId, String taskBeginTime, String taskEndTime,String startPlace, String targetPlace);
    
    /**
	 * 根据执行任务编号查询执行任务信息
	 * @param executeTaskId 执行任务编号（不为空）
	 * @return
	 */
    public ResultPojo selectExecuteTaskInfoById(String executeTaskId);
    
    /**
	 * 查询执行任务列表信息
	 * @param executeTaskId 执行任务编号
	 * @param taskId 任务编号
	 * @param taskName 任务名称（模糊查询）
	 * @param schemeId 方案编号
	 * @param taskRankId 任务等级编号
	 * @param taskTypeId 任务类型编号
	 * @param beforeLicensePlate 前导车牌
	 * @param executeDate 执行日期
	 * @param beginTime 开始时间
	 * @param endTime 结束时间
	 * @param startPlace 起始位置（模糊查询）
	 * @param targetPlace 到达位置（模糊查询）
	 * @param executeStatusId 执行状态编号
	 * @param isWaitExecute 是否待执行
	 * @return 
	 */
	public ResultPojo selectExecuteTaskBaseInfoList(String executeTaskId, String taskId, String taskName,
			String schemeId, String taskRankId, String taskTypeId, String beforeLicensePlate, String executeDate,
			String beginTime, String endTime, String startPlace, String targetPlace, String executeStatusId,
			String isWaitExecute);
    
    /**
	 * 查询执行任务详细列表信息
	 * @param executeTaskId 执行任务编号
	 * @param taskId 任务编号
	 * @param taskName 任务名称（模糊查询）
	 * @param schemeId 方案编号
	 * @param taskRankId 任务等级编号
	 * @param taskTypeId 任务类型编号
	 * @param beforeLicensePlate 前导车牌
	 * @param executeDate 执行日期
	 * @param beginTime 开始时间
	 * @param endTime 结束时间
	 * @param startPlace 起始位置（模糊查询）
	 * @param targetPlace 到达位置（模糊查询）
	 * @param executeStatusId 执行状态编号
	 * @param isWaitExecute 是否待执行
	 * @return 
	 */
	public ResultPojo selectExecuteTaskDetailInfoList(String executeTaskId, String taskId, String taskName,
			String schemeId, String taskRankId, String taskTypeId, String beforeLicensePlate, String executeDate,
			String beginTime, String endTime, String startPlace, String targetPlace, String executeStatusId,
			String isWaitExecute);
    
    /**
	 * 查询执行任务分页信息
	 * @param page
	 * @param executeTaskId 执行任务编号
	 * @param taskId 任务编号
	 * @param taskName 任务名称（模糊查询）
	 * @param schemeId 方案编号
	 * @param taskRankId 任务等级编号
	 * @param taskTypeId 任务类型编号
	 * @param beforeLicensePlate 前导车牌
	 * @param executeDate 执行日期
	 * @param beginTime 开始时间
	 * @param endTime 结束时间
	 * @param startPlace 起始位置（模糊查询）
	 * @param targetPlace 到达位置（模糊查询）
	 * @param executeStatusId 执行状态编号
	 * @param isWaitExecute 是否待执行
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo selectExecuteTaskInfoPage(Page page, String executeTaskId, String taskId, String taskName,
			String schemeId, String taskRankId, String taskTypeId, String beforeLicensePlate, String executeDate,
			String beginTime, String endTime, String startPlace, String targetPlace, String executeStatusId,
			String isWaitExecute);
    
    /**
	 * 新增警卫任务信息
	 * @param taskInfoDto 任务信息
	 * @param personName 操作人
	 * @return
	 */
    public ResultPojo insertTaskInfo(TaskInfoDto taskInfoDto, String userName);

    /**
	 * 修改警卫任务信息
	 * @param taskInfoDto 任务信息
	 * @param personName 操作人
	 * @return
	 */
    public ResultPojo editTaskInfo(TaskInfoDto taskInfoDto, String userName);

    /**
	 * 修改警卫任务基础信息（不包含时间段）
	 * @param taskInfoDto 任务信息
	 * @param personName 操作人
	 * @return
	 */
    public ResultPojo editTaskBaseInfo(TaskInfoDto taskInfoDto, String userName);
    
    /**
	 * 删除警卫任务信息
	 * @param taskId 任务编号
	 * @param personName 操作人
	 * @return
	 */
    public ResultPojo deleteTaskInfo(String taskId, String userName);
    
    /**
	 * 新增快速特勤任务信息
	 * @param taskInfoDto 任务信息
	 * @param personName 操作人
	 * @return
	 */
    public ResultPojo insertFastTaskInfo(TaskInfoDto taskInfoDto, String userName);

    /**
	 * 修改快速特勤任务信息
	 * @param taskInfoDto 任务信息
	 * @param personName 操作人
	 * @return
	 */
    public ResultPojo editFastTaskInfo(TaskInfoDto taskInfoDto, String userName);

    /**
	 * 删除快速特勤任务信息
	 * @param taskId 任务编号
	 * @param personName 操作人
	 * @return
	 */
    public ResultPojo deleteFastTaskInfo(String taskId, String userName);
    
    /**
   	 * 预演任务查询，根据当前日期和方案编号进行查询；
   	 * @param schemeId 方案编号；
   	 * @param date 当前日期；
   	 * @return
   	 */
    public ResultPojo getTaskByTimeAndSchemeId(String schemeId,String date);

}
